 #!/usr/bin/env python3
"""
清理所有知识库和向量数据库的脚本
"""

import os
import sys
import shutil
import logging
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))

from config import Config

# 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def clear_all_knowledge_bases():
    """清理所有知识库和向量数据库"""
    try:
        logger.info("开始清理所有知识库...")
        
        # 1. 删除向量数据库目录
        vector_db_path = Path(Config.VECTOR_DB_PATH)
        if vector_db_path.exists():
            logger.info(f"删除向量数据库目录: {vector_db_path}")
            shutil.rmtree(vector_db_path)
            logger.info("向量数据库目录删除成功")
        else:
            logger.info("向量数据库目录不存在，跳过")
        
        # 2. 重新创建空的向量数据库目录
        vector_db_path.mkdir(parents=True, exist_ok=True)
        logger.info("重新创建空的向量数据库目录")
        
        # 3. 清理知识库管理器缓存
        try:
            from rag.knowledge_base_manager import KnowledgeBaseManager
            kb_manager = KnowledgeBaseManager()
            kb_manager.knowledge_bases.clear()
            logger.info("知识库管理器缓存已清理")
        except Exception as e:
            logger.warning(f"清理知识库管理器缓存失败: {e}")
        
        # 4. 清理ChromaDB管理器缓存
        try:
            from rag.chroma_manager import chroma_manager
            chroma_manager.clear_cache()
            logger.info("ChromaDB管理器缓存已清理")
        except Exception as e:
            logger.warning(f"清理ChromaDB管理器缓存失败: {e}")
        
        logger.info("所有知识库清理完成！")
        return True
        
    except Exception as e:
        logger.error(f"清理知识库失败: {e}")
        return False

if __name__ == "__main__":
    success = clear_all_knowledge_bases()
    if success:
        print("✅ 所有知识库清理成功！")
    else:
        print("❌ 知识库清理失败！")